import CryptoSM from 'sm-crypto'

function object2string(data) {
  if (typeof data === 'object') {
    return JSON.stringify(data)
  }

  let str = JSON.stringify(data)
  if (str.startsWith('\'') || str.startsWith('"')) {
    str = str.substring(1)
  }
  if (str.endsWith('\'') || str.endsWith('"')) {
    str = str.substring(0, str.length - 1)
  }
  return str
}

// -----------------------  国密SM4算法 加密、解密 -----------------------
const SM4_KEY = '43960711ba4b418f715a6480a483eb59'

const SM4 = {
  encryptData(data) {
    // SM4 加密
    return CryptoSM.sm4.encrypt(object2string(data), SM4_KEY)
  },

  decryptData(data) {
    // 第二步：SM4 解密
    return CryptoSM.sm4.decrypt(data, SM4_KEY)
  },
}

/**
 * 加密
 */
export const encryptData = function (data) {
  return !data ? null : SM4.encryptData(data)
}

/**
 * 解密
 */
export const decryptData = function (data) {
  return !data ? null : SM4.decryptData(data)
}
